package com.baicai.qqlogindemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;

/**
 * android定义一个文件直接写入会报read-only错误，
 * 因为android的app就像一个用户，
 * 不能去操作别的app（用户）的内容
 */

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    private EditText mAccount;
    private EditText mPassword;
    private Button mLogin;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //第一步，找到控件
        initView();
        //第二步，设置点击事件
        initListener();
    }

    /**
     * 具体点击事件
     */
    private void initListener() {
        mLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //一般方法比较长的化入函数
                Log.d(TAG, "点击事件开始");
                handlerLoginEvent(v);
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
//        File file_path = this.getFilesDir();
//        File save_file = new File(file_path, "info.txt");

        try {
            FileInputStream fileInputStream = this.openFileInput("info.txt");
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
            String info = bufferedReader.readLine();
            String[] strings = info.split("\\*\\*\\*");
            String account = strings[0];
            String password = strings[1];
            //回显数据
            mAccount.setText(account);
            mPassword.setText(password);
            Toast.makeText(this, "回显数据", Toast.LENGTH_SHORT).show();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 处理登陆事件
     *
     * @param v
     */
    private void handlerLoginEvent(View v) {
        //第三步，获取账号和密码信息
        String accountText = mAccount.getText().toString();
        String passwordText = mPassword.getText().toString();
        //保存账号和密码
        if (accountText.isEmpty() | passwordText.isEmpty()) {
            Toast.makeText(this, "账号或密码为空", Toast.LENGTH_SHORT).show();
        } else {
            saveUserInfo(accountText, passwordText);

        }

    }

    /**
     * 缓存路径 == /data/user/0/com.baicai.qqlogindemo/cache
     * 文件路径 == /data/user/0/com.baicai.qqlogindemo/files
     * 缓存路径系统根据自身会清理的
     */
    private void saveUserInfo(String accountText, String passwordText) {
        File file_path = this.getFilesDir();
        File save_file = new File(file_path, "info.txt");
//        File cachedir = this.getCacheDir();
//        Log.d(TAG, "缓存路径 == " + cachedir);
//        Log.d(TAG, "文件路径 == " + file_path);

        Log.d(TAG, "保存用户信息");
        try {
            if (!save_file.exists()) {
                save_file.createNewFile();
            }
            FileOutputStream fos = new FileOutputStream(save_file);
            // 以特定的方式存储账号和密码
            fos.write((accountText + "***" + passwordText).getBytes());
            fos.close();
            Toast.makeText(this, "登陆成功", Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 这个方法我们用来找到对应的控件
     */
    private void initView() {
        mAccount = this.findViewById(R.id.et_account);
        mPassword = this.findViewById(R.id.et_password);
        mLogin = this.findViewById(R.id.bt_login);
    }
}
